package ch2;

public class Datetype {
	public static void main(String[] args){
		
		//基本数据类型间的转换
		byte bt = 127;//数值储存时不能超过其（储值）数据范围
		short sh = 4325;
		int i = 1234567;//整数默认是int类型的
		long l = 12345678;
				
		float f = 123.34f;//单精度浮点数必须以F或f结尾
		double d1 = 123432.334;//小数默认是double类型的
		double d2 = 123432.334d;//双精度的小数以D或d结尾，如果不写默认也是double
		double d3 = 123432.334D;
		
		d1 = f = l = i = sh = bt;//当把一个小范围的数据转换为大范围时，可以自动转换，long类型可以自动转换为float类型
		f = (float)d1;//当把一个大范围的数据转换为一个小范围时，需要进行强制转换，强制转换使用小括号（）表示
		l = (long)f;
		//l = (long)f = (float)d1;类型强制转换不能连续转换
	
		//字符类型
		//char ch1 = '';//错误，没有这样的空字符
		char ch1 = 'a';//字符使用单引号表示，引号内部必须有一个特定的符号
		char ch2 = '&';
		char ch3 = '大';//字符类型能不能保存汉字
		i = ch3;//char类型可以自动转换为int类型
		ch3 = (char)i;//强制转换
		
		//字符与字符串
		String str = "";//字符串使用双引号表示，可以使空字符串
		String str2 = null; //字符串的默认值是null，null是一种特殊的数据类型（表示没有数据），但不是空字符串
 	
		boolean bool = true;//boolean类型表示一种逻辑类型，真和假，对与错，正与反
		boolean bool2 = false;
		
		//使用下划线增加数据的可阅读性
		long l3 = 1_000_000_000;//从jdk1.7开始支持使用下划线增加数据可阅读性
		long l4 = 1_0000_0000;
		float f3 = 1234.1234_5678_1f;
		//3._1415_9265; // 小数点后不能添加下划线
		//1234_4567_8901_2345_L; // 数字结尾不能添加下划线  
		//_777_99_8888L; // 数值开头不能添加下划线
		
		//进制数
		//常用的数的进制：二进制，八进制，十进制，十六进制
		//二进制：0 1
		//八进制：0 1 2 3 4 5 6 7
		//十进制：0 1 2 3 4 5 6 7 8 9
		//十六进制：0 1 2 3 4 5 6 7 8 9 A B C D E F
		
		//数制之间的换算
		//数据的表示
		int i3 = 0B01_0101_0101;//二进制数以0B或0b开始
		i3 = 01_010_101_701;//八进制数以（零）0开头
		i3 = 0xe3d4b6a6;//十六进制数：（零）0x开头
		
		//数制之间的还算
		//十进制转二进制用短除法，二进制转十进制
		//练习：用笔算，34转换成二进制是多少，10011111转换成十进制数
		
	}

}
